home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-04-24 | 9.5 KB | 303 lines |
- 1 KEY OFF:CLS
- 2 LOCATE 10,1:PRINT " REAL ESTATE ANALYSIS PROGRAM":PRINT " by":PRINT " Dorn W. Stickle"
- 3 LOCATE 25,1:PRINT " Press any key to continue";
- 4 DORN$=INKEY$:IF DORN$="" THEN 4
- 10 DIM M(27),C(30)
- 20 KEY OFF
- 30 CLS : LOCATE 5,1: PRINT "SELECT REAL ESTATE ANALYSIS PROGRAM MODE"
- 40 PRINT
- 50 PRINT "MODE"
- 60 PRINT " 0 RENT/BUY"
- 70 PRINT " 1 INVEST"
- 80 PRINT
- 90 INPUT "MODE"; X1
- 120 CLS
- 130 IF X1<>1 THEN 190 ELSE H=0
- 140 PRINT "INVESTMENT PROPERTY"
- 150 PRINT
- 160 PRINT "THIS PROGRAM PROVIDES A FINANCIAL ANALYSIS OF A PROSPECTIVE INVESTMENTPROPERTY"
- 170 PRINT
- 180 PRINT "READ DIRECTIONS CAREFULLY" : GOTO 220
- 190 H=0 : PRINT "RENT VS. BUY ANALYSIS PROGRAM" : PRINT : PRINT "THIS PROGRAM PROVIDES FINANCIAL"
- 200 PRINT "ANALYSIS OF THE ADDITIONAL INVESTMENT REQUIRE D TO BUY A HOME RATHER THAN RENT."
- 210 PRINT : PRINT "READ DIRECTIONS CAREFULLY."
- 220 PRINT
- 230 PRINT
- 240 INPUT "DO YOU WANT TO USE DATA ALREADY STORED (Y/N) ";T1$
- 260 IF T1$<>"Y" AND T1$<>"y" THEN 340
- 270 PRINT "WHICH FILE NAME?"
- 280 INPUT C2$
- 290 OPEN C2$ FOR INPUT AS #1
- 300 FOR I=1 TO 27 :INPUT# 1 , M(I):NEXT I
- 310 CLOSE #1
- 330 GOTO 960
- 340 PRINT :PRINT :PRINT "NUMBER OF YEARS FROM PURCHASE UNTIL SALE (";M(19);") ";
- 350 INPUT A: IF A <> 0 THEN M(19) = A
- 360 IF X1=1 THEN 420
- 365 REM===================================================================
- 370 IF M(26) = 0 THEN A$ = "Y" ELSE A$ = "N"
- 380 PRINT :PRINT "ARE YOU GOING TO DEFER INCOME TAXES"
- 390 PRINT "ON CAPITAL GAINS WHEN YOU SELL (";A$;") ";
- 400 INPUT T5$: IF T5$ = "" THEN 420
- 410 IF T5$="Y" THEN M(26)=0 ELSE M(26) =1
- 420 PRINT :PRINT "PRICE OF THE PROPERTY (";M(1);") ";
- 430 INPUT A: IF A <> 0 THEN M(1)=A
- 440 PRINT :PRINT "% DOWNPAYMENT (";M(2);"%) ";
- 450 INPUT A: IF A <> 0 THEN M(2)=A
- 460 PRINT :PRINT "INTEREST RATE IN % (";M(3);"%) ";
- 470 INPUT A: IF A <> 0 THEN M(3)=A
- 480 PRINT :PRINT "TAX DEDUCTABLE CLOSING COSTS (";M(17);") ";
- 490 INPUT A: IF A <> 0 THEN M(17)=A
- 500 PRINT :PRINT "NON-DEDUCTABLE CLOSING COSTS AND OTHER INITIAL COSTS (";M(18);") ";
- 510 INPUT A: IF A <> 0 THEN M(18)=A
- 520 PRINT :PRINT "MORTGAGE TERM IN YRS (";M(5);") ";
- 530 INPUT A: IF A <> 0 THEN M(5)=A
- 540 IF X1=0 THEN 580
- 550 PRINT :PRINT "VALUE OF THE LAND (";M(6);") ";
- 560 INPUT A: IF A <> 0 THEN M(6)=A
- 570 PRINT :PRINT "MONTHLY RENTAL INCOME - ALL UNITS OCCUPIED (";M(7);") "; : GOTO 600
- 580 PRINT :PRINT "MONTHLY ALTERNATIVE RENT COST FOR EQUIVALENT HOUSING, PLUS-"
- 590 PRINT "MONTHLY UTILITIES YOU PAY (";M(7);") ";
- 600 INPUT A: IF A <> 0 THEN M(7)=A
- 610 IF X1=0 THEN 640
- 620 PRINT :PRINT "ESTIMATED VACANCY RATE IN % (";M(4);"%) ";
- 630 INPUT A: IF A <> 0 THEN M(4)=A
- 640 PRINT :PRINT "ANNUAL UTILITIES EXPENSE (";M(8);") ";
- 650 INPUT A: IF A <> 0 THEN M(8)=A
- 660 PRINT :PRINT "ANNUAL PROPERTY TAXES (";M(9);") ";
- 670 INPUT A: IF A <> 0 THEN M(9)=A
- 680 IF X1=1 THEN PRINT "MAINTANENCE AS % OF RENTAL INCOME ("; :GOTO 700
- 690 PRINT :PRINT "ANNUAL MAINTENANCE COSTS (";
- 700 PRINT M(10);") ";
- 710 INPUT A: IF A <> 0 THEN M(10)=A
- 720 PRINT :PRINT "ANNUAL INSURANCE COSTS (";M(11);") ";
- 730 INPUT A: IF A <> 0 THEN M(11)=A
- 740 PRINT :PRINT "OTHER ANNUAL EXPENSES (";M(12);") ";
- 750 INPUT A: IF A <> 0 THEN M(12)=A
- 760 IF X1=0 THEN M(13)=0 :GOTO 800
- 770 PRINT :PRINT "DEPRECIATION RATE IN %/YR."
- 780 PRINT "USING `DECLINING BALANCE' METHOD (";M(13);"%)";
- 790 INPUT A: IF A <> 0 THEN M(13)=A
- 800 PRINT :PRINT "MARGINAL INCOME TAX BACKET (";M(14);"%) ";
- 810 INPUT A: IF A <> 0 THEN M(14)=A
- 820 PRINT :PRINT "INFLATION RATE (%) FOR RENTS, EXPENSES, AND TAXES (";M(15);"%) ";
- 830 INPUT A: IF A <> 0 THEN M(15)=A
- 840 PRINT :PRINT "PROPERTY APPRECIATION RATE IN % (";M(16);"%) ";
- 850 INPUT A: IF A <> 0 THEN M(16)=A
- 860 IF M(16)<0 THEN PRINT "MUST NOT BE LESS THAN ZERO" : GOTO 840
- 870 IF X1=1 THEN M(20)=1 ELSE M(20)=2
- 875 REM===================================================================
- 880 PRINT :PRINT "DO YOU WANT TO STORE THE DATA (Y/N) ";
- 890 INPUT T2$
- 900 IF T2$<>"Y" AND T2$<>"y" THEN 960
- 910 PRINT :PRINT "NAME THE FILE"
- 920 INPUT C3$
- 930 OPEN C3$ FOR OUTPUT AS #1
- 940 FOR I=1 TO 27:PRINT#1,M(I):NEXT I
- 950 CLOSE # 1
- 955 REM===================================================================
- 960 ' SELECT COMPUTATION OPTION
- 970 CLS:PRINT "CHOOSE ONE OF THE FOLLOWING OPTIONS:"
- 980 PRINT :PRINT :PRINT " 1= LIST INPUT DATA"
- 990 PRINT " 2= A. T. CASH FLOWS & IRR"
- 1020 PRINT " 4= COMPUTE IRR ONLY"
- 1030 PRINT " 5= CHANGE A VARIABLE"
- 1040 PRINT " 6= MODIFY ALL VARIABLES"
- 1050 PRINT " 7= STOP"
- 1060 PRINT :PRINT :INPUT F1
- 1070 F1=INT (F1)
- 1080 IF F1<1 OR F1>7 THEN PRINT "NO GOOD, TRY AGAIN" : GOTO 980
- 1090 IF F1=3 THEN PRINT : PRINT "COMPUTING RETURN RATE (IRR)..." : PRINT : AI=M(16)= 0 : H=0
- 1100 I6=1
- 1110 O3=0
- 1120 Y2=0
- 1130 IF F1=1 THEN 2720
- 1140 IF F1=2 THEN 1190
- 1150 IF F1=3 THEN F1=1:GOTO 2720
- 1160 IF F1=5 THEN 2680
- 1170 IF F1=6 THEN 340
- 1180 IF F1=7 THEN PRINT "DONE" : STOP
- 1190 GOSUB 3050
- 1195 REM===================================================================
- 1200 PRINT "**** CASHFLOW & INCOME ****"
- 1210 ' START COMPUTATIONS *****
- 1220 M(21)=M(1)-M(2)/100*M(1)
- 1230 IF X1=1 THEN M(22)=M(1)-M(6)
- 1240 IF X1=1 THEN M(24)=M(22) ELSE M(24)=0:M(22)=0
- 1250 M(25)=M(21)
- 1260 GOSUB 1640
- 1270 ' LPRINTS EACH YEARS CASH FLOWS."
- 1280 Y2=Y2+1
- 1290 P1=1+(Y2-1)*12
- 1300 P2=P1+11
- 1310 GOSUB 1740
- 1320 IF X1=1 THEN O1=12*(100-M(4))/100*I6 ELSE O1=12*M (7)*I6
- 1330 I6 =I6*(1+M(15)/100)
- 1340 IF X1=1 THEN O3=M(24)*M(13)/100 ELSE O3=0
- 1350 IF X1=1 THEN O4= (M(8) +M(9)+M(11)+M(12)*I6+1*M(10))/100 ELSE 1370
- 1360 GOTO 1380
- 1370 O4=(M(8)+M(9)+M(10)+M(11)+M(12))*I6+M(23)-O2
- 1380 O5=O2+O3+O4 : IF X1<>1 THEN O5=O5-O3
- 1390 O6=O1-O5
- 1400 IF X1=1 THEN O7=O6*(-M(14)/100) ELSE P7=(O2+N(9))*(M(14)/100)
- 1410 IF X1=1 THEN O8=O1-M(23)-4 ELSE O8=O1-O2-O4
- 1420 IF X1=1 THEN O9=O8+O7 ELSE O9=O8+P7
- 1430 C(Y2)=O9 : IF X1<>1 THEN 1450
- 1440 M(24)=M(24)-O3
- 1450 M(25)=M(25)-M(23)+O2
- 1460 ' LPRINTOUT ANNUAL CASHFLOWS!
- 1470 IF F1<>2 THEN 1620
- 1480 PRINT "YEAR";Y2;"(ANNUAL $)";STRING$(20,"=")
- 1490 IF X1=1 THEN PRINT "GROSS RENTAL INCOME=",O1 ELSE 1510
- 1500 GOTO 1520
- 1510 PRINT "ALTER. RENTAL COSTS =",O1
- 1520 PRINT " EXPENSES:"
- 1530 PRINT "INTEREST EXPENSE =",O2
- 1540 PRINT "DEPREC. EXPENSE =",O3
- 1550 PRINT "OTHER EXPENSE =",O4
- 1560 PRINT "TOTAL EXPENSES =",O5
- 1570 PRINT
- 1580 PRINT "NET INCOME =",O6
- 1590 PRINT "B. T. CASH FLOW =",O8
- 1600 IF X1<>1 THEN PRINT "INCOME TAX SAVINGS =",P7
- 1610 PRINT "A. T. CASH FLOW =",O9
- 1620 IF Y2<M(19) THEN 1280
- 1630 GOTO 1800
- 1640 ' PAYMENT COMPUTATION !
- 1650 S3=M(21)
- 1660 V1=M(21)
- 1670 J=M(3)/1200
- 1680 N=M(5)*12
- 1690 R=(1+J)^(-N)
- 1700 P=-V1/((1-R)/J)
- 1710 P=INT(P*100+0.5)/100
- 1720 M(23)=-12*P
- 1730 RETURN
- 1740 ' *** COMPUTE ANN.INER. EXPENSE ***
- 1750 O2=0
- 1760 FOR I=P1 TO P2
- 1770 S2=J*S3 : S2=INT (S2*100+ 0.5)/100 : S3=S3+S2+P : O2=O2+S2
- 1780 NEXT I
- 1790 RETURN
- 1800 REM===================================================================
- 1810 C(0)=-M(1)*M(2)/100-M(18)-M(17)*(100-M(14))/100
- 1820 A2=C(M(19))
- 1825 G1=M(1)*(1+M(16)/100)^M(19)
- 1830 GOTO 1860
- 1840 IF X1=1 THEN T=(M(22)-M(24))*M(14)/100+(G1*0.94-M(1))*0.4*M(14)/100 ELSE 1730
- 1850 T=M(26)*(G1*0.94-M(1))*0.4*M(14)/100
- 1860 C(M(19))=A2+G1*0.94-T-M(25)
- 1870 IF F1<>2 THEN 2040
- 1880 IF X1=1 THEN PRINT "SUMMARY OF AFTER TAX CASH FLOWS" ELSE 1890
- 1890 PRINT "SUMMARY OF MARGINAL AFTER TAX CASH FLOWS"
- 1900 FOR I=0 TO M(19)
- 1910 PRINT "YEAR",I,C(I)
- 1920 NEXT I
- 1950 PRINT "FINAL SALE PRICE = ";G1
- 1960 PRINT
- 1970 PRINT "WITH 6% REAL ESTATE COMMISSION, SALE PROCEEDS IN YEAR";M(19);"IS ";G1*0.94
- 2000 PRINT
- 2005 PRINT :INPUT "HIT ENTER TO CONTINUE ";Q$ :CLS
- 2010 PRINT "INTERNAL RATE OF RETURN BEING COMPUTED."
- 2030 PRINT
- 2035 REM===================================================================
- 2040 ' *** COMPUTE IRR ***
- 2050 K1=1 'SIGH OF P.V. INDICATOR
- 2060 K2=0.2 'INITIAL IRR INCREM.
- 2070 J2=0 ' FLAG FOR NEG. IRR
- 2080 J=0
- 2090 V2=0
- 2100 V4=0
- 2110 FOR I=0 TO M(19)
- 2120 R=(1+J)^I
- 2130 V1=C(I)/R
- 2140 V2=V2+V1
- 2150 NEXT I
- 2160 K=ABS(V2)/V2
- 2170 IF K<>K1 THEN K1=K : K2=K2/2
- 2180 J1=J+K1*K2
- 2190 IF J1<0 THEN PRINT "APPR. RATE ";M(16);"%";" IRR NEGATIVE" : J=0 : J1=J : J2=1 : GOTO 2090
- 2200 IF ABS(J-J1)>0.000999999 THEN J=J1 : GOTO 2090
- 2210 IF F1<>3 THEN PRINT "AT ANN. APPREC. RATE =";M(16);"%";"A.T. INT. RATE OF RETURN="; J*100;"%"
- 2220 IF F1<>3 THEN INPUT "HIT ENTER TO CONTINUE";Q$:GOTO 960
- 2230 IF J=0 THEN 2290
- 2240 X=M(16)
- 2250 D(H)=X
- 2260 E(H)=J*100
- 2270 H=H+1
- 2280 PRINT USING "APPR. RATE",M(16),"%"," IRR =",E(H-1),"%"
- 2290 IF J2=1 AND M(16)<24 THEN M(16)=M(16)+2 : GOTO 2310
- 2300 IF M(16)<25 THEN M(16)=M(16)+10
- 2310 INPUT "HIT ENTER TO CONTINUE ";Q$ : GOTO 1830
- 2315 REM===================================================================
- 2620 ! *** CHANGES ONE OR MORE VARIABLES ***
- 2630 CRT IS 1
- 2640 PRINT
- 2650 PRINT "DO YOU WANT TO CHANGE A VARIABLE? (Y/N)"
- 2660 INPUT T4$
- 2670 IF T4$[1,1]#"Y" THEN 970
- 2680 CLS:PRINT "1 .PROPERTY PRICE",M(1)
- 2681 PRINT "2 .% DOWN",,M(2)
- 2682 PRINT "3 .INTEREST RATE %",M(3)
- 2684 PRINT "4 .% EST VACANCY RATE",M(4)
- 2685 PRINT "5 .MORTGAGE TERM YRS. ",M(5)
- 2686 PRINT "6 .LAND VALUE" ,,M(6)
- 2687 PRINT "7 .MONTHLY RENTAL INCOME",M(7)
- 2688 PRINT "8 .ANNUAL UTILITY EXPENSES",M(8)
- 2689 PRINT "9 .ANNUAL PROPERTY TAXES. ",M(9)
- 2690 PRINT "10.MAINT .% OF RENTAL INC.", M(10)
- 2691 PRINT "11.OTHER ANNUAL EXP.",M(11)
- 2692 PRINT "12.ANNUAL INSURANCE EXP.",M(12)
- 2693 PRINT "13.%/YR. DEPRECIATION.",M(13)
- 2694 PRINT "14.MARGINAL INCOME TAX % ",M(14)
- 2695 PRINT "15.INFLATION % RENT & EXP",M(15)
- 2696 PRINT "16.EST. PROPERTY APPR.%/YR",M(16)
- 2697 PRINT "17.TAX-DED. CLOSING COSTS",M(17)
- 2698 PRINT "18.NON-DED. CLOSING COSTS",M(18)
- 2699 PRINT "19.YEARS:PURCHASE TO SALE",M(19)
- 2700 PRINT :LOCATE 22,1:PRINT "ENTER 0 WHEN COMPLETE "
- 2701 PRINT :LOCATE 23,1:INPUT "ENTER VARIABLE NUMBER TO CHANGE ";I
- 2704 PRINT :LOCATE 23,1:INPUT "ENTER VARIABLES NEW VALUE ";M(I)
- 2705 IF I=0 THEN GOTO 910 ELSE GOTO 2680
- 2710 STOP
- 2715 REM===================================================================
- 2720 ' *** PRINT INPUT VARIABLES ***
- 2730 GOSUB 3050
- 2740 PRINT :PRINT :PRINT :PRINT
- 2750 A$="22A,9D."
- 2760 PRINT "**** INPUT DATA ****"
- 2770 PRINT:PRINT
- 2780 PRINT "PROPERTY PRICE",M(1)
- 2790 PRINT "% DOWN",,M(2)
- 2800 PRINT "INTEREST RATE %",M(3)
- 2810 PRINT "TAX-DED. CLOSING COSTS",M(17)
- 2820 PRINT "NON-DED. CLOSING COSTS",M(18)
- 2830 PRINT
- 2840 PRINT "MORTGAGE TERM YRS. ",M(5)
- 2850 IF X1=1 THEN PRINT "LAND VALUE" ,,M(6) ELSE 2870
- 2860 PRINT "MONTHLY RENTAL INCOME",M(7) : GOTO 2880
- 2870 PRINT "ALTER. MO. RENTAL COSTS",M(7)
- 2880 IF XX1=1 THEN PRINT "%" EST VACANCY RATE",M(4)
- 2890 PRINT "ANNUAL PROPERTY TAXES. ",M(8)
- 2900 PRINT
- 2910 PRINT "ANNUAL UTILITY EXPENSES",M(9)
- 2920 IF X1=1 THEN PRINT "MAINT .% OF RENTAL INC.", M(10) ELSE 2940
- 2930 GOTO 2950
- 2940 PRINT "ANNUAL INSURANCE EXP.",M(12)
- 2950 PRINT "ANNUAL INSURAMCE EXP.",M(11)
- 2960 PRINT "OTHER ANNUAL EXP. ",M(12)
- 2970 IF X1=1 THEN PRINT "%/YR. DEPRECIATION.",M(13)
- 2980 REM
- 2990 PRINT "MARGINAL INCOME TAX % ",M(14)
- 3000 PRINT "INFLATION % RENT & EXP",M(15)
- 3010 PRINT "EST. PROPERTY APPR.%/YR",M(16)
- 3020 PRINT "YEARS:PURCHASE TO SALE",M(19)
- 3030 PRINT
- 3040 INPUT "HIT ENTER TO CONTINUE ";Q$ :GOTO 960
- 3050 ' SUBROUTINE FOR LPRINTOUTS
- 3060 REM
- 3070 REM
- 3080 REM
- 3090 RETURN
- 3100 END
-